package command

/*

 实现方式
声明仅有一个执行方法的命令接口。

抽取请求并使之成为实现命令接口的具体命令类。 每个类都必须有一组成员变量来保存请求参数和对于实际接收者对象的引用。 所有这些变量的数值都必须通过命令构造函数进行初始化。

找到担任发送者职责的类。 在这些类中添加保存命令的成员变量。 发送者只能通过命令接口与其命令进行交互。 发送者自身通常并不创建命令对象， 而是通过客户端代码获取。

修改发送者使其执行命令， 而非直接将请求发送给接收者。

客户端必须按照以下顺序来初始化对象：
    创建接收者。
    创建命令， 如有需要可将其关联至接收者。
    创建发送者并将其与特定命令关联。


命令模式优缺点
    单一职责原则。 你可以解耦触发和执行操作的类。
        开闭原则。 你可以在不修改已有客户端代码的情况下在程序中创建新的命令。
        你可以实现撤销和恢复功能。
        你可以实现操作的延迟执行。
        你可以将一组简单命令组合成一个复杂命令。
    代码可能会变得更加复杂， 因为你在发送者和接收者之间增加了一个全新的层次。


责任链模式、 命令模式、 中介者模式和观察者模式用于处理请求发送者和接收者之间的不同连接方式：

    责任链按照顺序将请求动态传递给一系列的潜在接收者， 直至其中一名接收者对请求进行处理。
    命令在发送者和请求者之间建立单向连接。
    中介者清除了发送者和请求者之间的直接连接， 强制它们通过一个中介对象进行间接沟通。
    观察者允许接收者动态地订阅或取消接收请求。



*/
